import { CommonEvent } from "../Common/CommonEvent";
import { ECollider2DType } from "cc";

/**
 * 不同游戏专属事件
 */
export module EventType {
    export const Common = CommonEvent;

    /**与游戏玩法相关的游戏过程中的事件，从 100,000 开始 */
    export enum LevelEvent {
        startIndex = 100000,
        levelSceneLoadFinish,       //在首页中作为背景时所需的预制件已全部加载完毕
        resurgence,                 //观看视频成功，复活
        cancelResurgence,           //取消复活

        testWin,                    //测试用，直接判定为关卡胜利
        testLose,                   //测试用，直接判定为关卡失败

        //游戏操作
        keyDown,                    //攻击、技能等操作按钮按下
        keyUp,                      //操作按钮松开
        keyStay,                    //操作按钮持续按住
        startJoy,                   //按下摇杆
        moveJoy,                    //移动摇杆
        stopJoy,                    //松开摇杆，停止移动
        clickSkill,                 //点击了技能按钮
        playerPosChanged,           //玩家位置发生变化
        playerUseSkill,             //玩家释放了技能
        updatePlayerSkillCool,      //更新玩家技能冷却状态

        playerEntered,              //玩家入场动画结束
        playerExited,               //玩家离场动画结束
        playerEnabled,              //玩家激活，开始游戏
        playerDeadAnimFinished,     //玩家死亡动画结束

        cameraEnabled,              //关卡主相机激活
        cameraMove,                 //关卡主相机移动

        //关卡变化
        killPlayer,                 //敌人击杀玩家
        enemyDead,                  //敌人死亡
        playerKillEnemy,            //玩家击杀敌人
        getCollection,              //收集到道具

        killOneRole,                //击杀一个敌人

        playerAddLife,              //玩家增加生命值
        playerSubLife,              //玩家减少生命值

        showLockPersonAnim,         //显示锁定人物动画
        enterSlowMotion,            //进入慢镜头状态
        rescuePerson,               //成功救援一个角色
        hideLockPersonAnim,         //隐藏锁定人物动画
        exitSlowMotion,             //退出慢镜头状态
        shakeScreen,                //碰撞到障碍物，震屏
        scaleScreen,                //视野缩放
        updateRoleScale,            //角色长大，镜头拉远

        updateLevelTime,            //关卡经历时间变化

        addEnemyBullet,             //添加敌人攻击特效
        removeEnemyBullet,          //移除敌人攻击特效

        addPlayerBullet,            //添加玩家攻击特效
        removePlayerBullet,         //移除玩家攻击特效

        addEffect,                  //播放特效
        removeEffect,               //移除特效
        addParticle,                //添加粒子特效
        removeParticle,             //移除粒子特效
        showPlayerShadow,           //显示玩家阴影
        hidePlayerShadow,           //隐藏玩家阴影

        addRigidNode,               //向2D物理世界中添加一个3D节点的碰撞体替身

        goodsUSE,

        removeDynamicBarrier,       //移除可撞开障碍物
        removeBreakBarrier,         //移除可破坏障碍物
        addBreakAnim,               //物体被破坏后，添加破坏动画
        removeBreakAnim,            //破坏动画结束之后, 移除次动画

        dropGold,                   //爆出金币
        addGoldColler,              //金币掉落地面后添加到碰撞管理器中，之后则可以拾取
        getGold,                    //玩家拾取到一个金币
        removeGold,                 //移除金币

        addDeadBody,                //角色死亡，添加尸体动画
        deadAnimFinish,

        addAtkBox,
        removeAtkBox,

        //ai
        enemyAtkFinish,
        enemyHitSuccess,
        enemyJumpInPortal,
        enemyJumpOutPortalFinish,

        //无敌特效
        addScanBox,
        removeScanBox,

        //levelInfoUI
        showHandAnim,
        updateRemainEnemy,
        updateGold,
        //地图添加完毕
        mapAdded,
        //角色添加完毕
        rolesEntered,


        //武器试用
        decideWeaponSkin,//确定了要试用的武器，开始关卡
        changePlayerSkin,

        //商城预览
        /**更新角色预览效果 */
        setPreview,

        //匹配UI
        /**敌人匹配完成 */
        matchFinish,

        /**修改信息条的金币位置，参数：bool,是否靠左 */
        changeGoldPos,

        //炸弹
        addTrapper,
        removeTrapper,
        addBoomEffect,
        /**角色丢出炸弹，引爆之前的炸弹 */
        dropTrapper,

        //传送门
        /**传送门已完全打开，开始传送角色 */
        doorOpened,
        /**玩家已完全跳进传送门，等待镜头切换后跳出 */
        playerJumpInPortalFinish,
    }


    /**编辑器专用的事件，从 101,000 开始 */
    export enum EditorEvent {
        startIndex = 101000,

        addNewLevel,        //新建关卡
        createLevel,        //
        chooseLevel,        //选择要编辑的关卡
        removeLevel,        //移除关卡

        mapPosChanged,      //关卡地图位置变更
        mapLenChanged,      //关卡地图长度变更
        mapPersonChanged,   //更新可救援角色数量

        choseItem,          //选择关卡元素

        dragItemOnMap,      //拖动已存在的物体
        dragItemStart,      //开始拖动物体
        dragItemMove,       //更新正在拖动的物体坐标
        dragItemEnd,        //松开拖动的物体
    }

    /**教学流程相关事件，从 102,00 开始 */
    export enum myTeachEvent {
        startIndex = 102000,
        /**显示教学内容 */
        showTeachTip,
        /**点击了确定按钮 */
        decideTip,
        /**设置箭头目标位置 */
        setArrowTargetPos,
        /**隐藏箭头 */
        hideArrow,
        /**显示教学奖励 */
        showTeachAward,
        /**已领取教学奖励 */
        gotTeachAward,
        /**添加传送门 */
        addPortals,
    }

}
